package com.mueblesgl.proyecto.dao.mysql;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Vector;

import com.mueblesgl.proyecto.dao.interfaces.SeguridadDAO;
import com.mueblesgl.proyecto.daofactory.MySqlDAOFactory;
import com.mueblesgl.proyecto.entidades.Producto;
import com.mueblesgl.proyecto.entidades.Usuario;
import com.mueblesgl.proyecto.util.Constantes;

public class MySqlSeguridadDAO implements SeguridadDAO{

	@Override
	public boolean registrarUsuario(Usuario usuario) {
		int filas_afectadas = 0;

		try {
			Connection con = MySqlDAOFactory.abrirConexion();
			Statement stmt = con.createStatement();

			String sql = "INSERT INTO USUARIO(usuario, password, idPerfil, estado) "
					+ "VALUES ('"
					+ usuario.getUsuario()
					+ "','"
					+ usuario.getPassword()
					+ "', "
					+ usuario.getIdPerfil()
					+ ", '"
					+ usuario.getEstado()
					 + "');";
			
			System.out.println(sql);
			filas_afectadas = stmt.executeUpdate(sql);
			con.close();
		} catch (Exception e) {
			e.printStackTrace();
		}

		if (filas_afectadas == 1)
			return true;

		return false;
	}

	@Override
	public Vector<Usuario> listarProductos() {
		Vector<Usuario> usuarios = new Vector<Usuario>();
		try {
			Connection con = MySqlDAOFactory.abrirConexion();
			Statement stmt = con.createStatement();
			String query = "SELECT * FROM USUARIO WHERE estado = '" + Constantes.ESTADO_ACTIVO + "' ORDER BY usuario;";
			System.out.println(query);		
			Usuario usuario = null;
			ResultSet rs = stmt.executeQuery(query);

			while (rs.next()) {
				usuario = new Usuario();
				
				usuario.setId(rs.getInt("idusuario"));
				usuario.setUsuario(rs.getString("usuario"));
				usuario.setPassword(rs.getString("password"));
				usuario.setIdPerfil(rs.getInt("idperfil"));
				
				
				usuarios.add(usuario);
			}
			con.close();
		} catch (Exception e) {
			e.printStackTrace();
		}	
		return usuarios;
	}

	@Override
	public Usuario consultarUsuario(int idUsuario) {
Usuario usuario = null;
		
		try {
			Connection con = MySqlDAOFactory.abrirConexion();
			Statement stmt = con.createStatement();
			String query = "select * from usuario where idusuario = " + idUsuario + ";";
			ResultSet rs = stmt.executeQuery(query);

			if (rs.next()) {
				usuario = new Usuario();
				usuario.setId(rs.getInt("idusuario"));
				usuario.setUsuario(rs.getString("usuario"));
				usuario.setPassword(rs.getString("password"));
				usuario.setIdPerfil(rs.getInt("idperfil"));
				usuario.setEstado(rs.getString("estado"));
						
			}
			con.close();
		} catch (Exception e) {
			e.printStackTrace();
		} 
		return usuario;
	}

	@Override
	public boolean eliminarUsuario(int idUsuario) {
		boolean retorno = false;
		
		try {
			Connection con = MySqlDAOFactory.abrirConexion();
			Statement stmt = con.createStatement();

			String sql = "UPDATE USUARIO "
					+ "SET estado = '"
					+ Constantes.ESTADO_INACTIVO					
					+"' WHERE idusuario = "+ idUsuario +";";
			
			int filas_afectadas = stmt.executeUpdate(sql);
			
			if(filas_afectadas == 1) retorno = true;
			else retorno = false;
			
			con.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return retorno;
	}


	@Override
	public boolean modificarUsuario(Usuario user) {
		int filas_afectadas = 0;

		try {
			Connection con = MySqlDAOFactory.abrirConexion();
			Statement stmt = con.createStatement();

			String sql = "UPDATE USUARIO "
					+ "SET usuario ='"
					+ user.getUsuario()
					+ "', password ='"
					+ user.getPassword()
					+ "', idPerfil = "
					+ user.getIdPerfil()
					+ ", estado = '"
					+ user.getEstado() + "' " 
					+"WHERE idUsuario = "+user.getId()+";";
			
			filas_afectadas = stmt.executeUpdate(sql);
			con.close();
		} catch (Exception e) {
			e.printStackTrace();
		}

		if (filas_afectadas == 1)
			return true;

		return false;
	}

	@Override
	public Vector<Usuario> buscarUsuarios(String buscar) {
		Vector<Usuario> usuarios = new Vector<Usuario>();
		try {
			Connection con = MySqlDAOFactory.abrirConexion();
			Statement stmt = con.createStatement();
			String query = "SELECT * FROM usuario WHERE upper(usuario) LIKE '" + buscar + "%'" +
					" AND estado = '"+Constantes.ESTADO_ACTIVO+"';";
					
			Usuario usuario = null;
			ResultSet rs = stmt.executeQuery(query);

			while (rs.next()) {
				usuario = new Usuario();
				
				usuario.setId(rs.getInt("idusuario"));
				usuario.setUsuario(rs.getString("usuario"));
				usuario.setPassword(rs.getString("password"));
				usuario.setIdPerfil(rs.getInt("idperfil"));
				usuario.setEstado(rs.getString("estado"));
				
				
				usuarios.add(usuario);
			}
			con.close();
		} catch (Exception e) {
			e.printStackTrace();
		}	
		return usuarios;
	}
}
